-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

=============================================================================
FreeBSD-SA-06:03.cpio                                       Security Advisory
                                                          The FreeBSD Project

Topic:          Multiple vulnerabilities cpio

Category:       contrib
Module:         contrib_cpio
Announced:      2006-01-11
Credits:        Imran Ghory, Richard Harms
Affects:        All FreeBSD releases.
Corrected:      2006-01-11 08:02:16 UTC (RELENG_6, 6.0-STABLE)
                2006-01-11 08:03:18 UTC (RELENG_6_0, 6.0-RELEASE-p2)
                2006-01-11 08:03:55 UTC (RELENG_5, 5.4-STABLE)
                2006-01-11 08:04:33 UTC (RELENG_5_4, 5.4-RELEASE-p9)
                2006-01-11 08:05:54 UTC (RELENG_5_3, 5.3-RELEASE-p24)
                2006-01-11 08:06:47 UTC (RELENG_4, 4.11-STABLE)
                2006-01-11 08:07:18 UTC (RELENG_4_11, 4.11-RELEASE-p14)
                2006-01-11 08:08:08 UTC (RELENG_4_10, 4.10-RELEASE-p20)
CVE Name:       CVE-2005-1111, CVE-2005-1229, CVE-2005-4268

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
<URL:http://www.freebsd.org/security/>.

I.   Background

The cpio utility copies files into or out of a cpio or tar archive.

II.  Problem Description

A number of issues has been discovered in cpio:

  . When creating a new file, cpio closes the file before setting its
    permissions. (CVE-2005-1111)

  . When extracting files cpio does not properly sanitize file names
    to filter out ".." components, even if the --no-absolute-filenames
    option is used. (CVE-2005-1229)

  . When adding large files (larger than 4 GB) to a cpio archive on
    64-bit platforms an internal buffer might overflow. (CVE-2005-4268)

III. Impact

  . The first problem can allow a local attacker to change the
    permissions of files owned by the user executing cpio providing
    that they have write access to the directory in which the file is
    being extracted. (CVE-2005-1111)

  . The lack of proper file name sanitation can allow an attacker to
    overwrite arbitrary local files when extracting files from a cpio
    a archive. (CVE-2005-1229)

  . The buffer-overflow on 64-bit platforms could lead cpio to a
    Denial-of-Service situation (crash) or possibly execute arbitrary
    code with the permissions of the user running
    cpio. (CVE-2005-4268)

IV.  Workaround

Use a different utility to create and extract cpio archives, for
example pax(1) or (on FreeBSD 5.3 or later) tar(1).  If this is not
possible, do not extract untrusted archives and when running on 64-bit
platforms do not add untrusted files to cpio archives.

V.   Solution

NOTE WELL: The solution described below causes cpio to not exact files
with absolute paths by default anymore.  If it is required that cpio
exact files with absolute names, use the --absolute-filenames
parameter.

Perform one of the following:

1) Upgrade your vulnerable system to 4-STABLE, 5-STABLE, or 6-STABLE,
or to the RELENG_6_0, RELENG_5_4, RELENG_5_3, RELENG_4_11, or
RELENG_4_10 security branch dated after the correction date.

2) To patch your present system:

The following patches have been verified to apply to FreeBSD 4.10,
4.11, 5.3, 5.4, and 6.0 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:03/cpio.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:03/cpio.patch.asc

b) Execute the following commands as root:

# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/gnu/usr.bin/cpio
# make obj && make depend && make && make install

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

Branch                                                           Revision
  Path
- -------------------------------------------------------------------------
RELENG_4
  contrib/cpio/copyin.c                                           1.6.6.2
  contrib/cpio/copyout.c                                          1.2.8.1
  contrib/cpio/cpio.1                                             1.3.6.1
  contrib/cpio/extern.h                                           1.2.8.1
  contrib/cpio/global.c                                       1.1.1.1.8.1
  contrib/cpio/main.c                                             1.3.2.1
RELENG_4_11
  src/UPDATING                                             1.73.2.91.2.15
  src/sys/conf/newvers.sh                                  1.44.2.39.2.18
  contrib/cpio/copyin.c                                      1.6.6.1.12.1
  contrib/cpio/copyout.c                                         1.2.36.1
  contrib/cpio/cpio.1                                            1.3.34.1
  contrib/cpio/extern.h                                          1.2.36.1
  contrib/cpio/global.c                                      1.1.1.1.36.1
  contrib/cpio/main.c                                            1.3.30.1
RELENG_4_10
  src/UPDATING                                             1.73.2.90.2.21
  src/sys/conf/newvers.sh                                  1.44.2.34.2.22
  contrib/cpio/copyin.c                                      1.6.6.1.10.1
  contrib/cpio/copyout.c                                         1.2.30.1
  contrib/cpio/cpio.1                                            1.3.28.1
  contrib/cpio/extern.h                                          1.2.30.1
  contrib/cpio/global.c                                      1.1.1.1.30.1
  contrib/cpio/main.c                                            1.3.24.1
RELENG_5
  contrib/cpio/copyin.c                                           1.7.8.1
  contrib/cpio/copyout.c                                         1.2.32.1
  contrib/cpio/cpio.1                                            1.3.30.1
  contrib/cpio/extern.h                                          1.2.32.1
  contrib/cpio/global.c                                      1.1.1.1.32.1
  contrib/cpio/main.c                                            1.3.26.1
RELENG_5_4
  src/UPDATING                                            1.342.2.24.2.18
  src/sys/conf/newvers.sh                                  1.62.2.18.2.14
  contrib/cpio/copyin.c                                          1.7.12.1
  contrib/cpio/copyout.c                                         1.2.38.1
  contrib/cpio/cpio.1                                            1.3.36.1
  contrib/cpio/extern.h                                          1.2.38.1
  contrib/cpio/global.c                                      1.1.1.1.38.1
  contrib/cpio/main.c                                            1.3.32.1
RELENG_5_3
  src/UPDATING                                            1.342.2.13.2.27
  src/sys/conf/newvers.sh                                  1.62.2.15.2.29
  contrib/cpio/copyin.c                                          1.7.10.1
  contrib/cpio/copyout.c                                         1.2.34.1
  contrib/cpio/cpio.1                                            1.3.32.1
  contrib/cpio/extern.h                                          1.2.34.1
  contrib/cpio/global.c                                      1.1.1.1.34.1
  contrib/cpio/main.c                                            1.3.28.1
RELENG_6
  contrib/cpio/copyin.c                                          1.7.14.1
  contrib/cpio/copyout.c                                         1.2.40.1
  contrib/cpio/cpio.1                                            1.3.38.1
  contrib/cpio/extern.h                                          1.2.40.1
  contrib/cpio/global.c                                      1.1.1.1.40.1
  contrib/cpio/main.c                                            1.3.34.1
RELENG_6_0
  src/UPDATING                                              1.416.2.3.2.7
  src/sys/conf/newvers.sh                                    1.69.2.8.2.3
  contrib/cpio/copyin.c                                          1.7.16.1
  contrib/cpio/copyout.c                                         1.2.42.1
  contrib/cpio/cpio.1                                            1.3.40.1
  contrib/cpio/extern.h                                          1.2.42.1
  contrib/cpio/global.c                                      1.1.1.1.42.1
  contrib/cpio/main.c                                            1.3.36.1
- -------------------------------------------------------------------------

VII. References

[CVE-2005-1111]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1111
http://marc.theaimsgroup.com/?l=bugtraq&m=111342664116120
https://savannah.gnu.org/patch/?func=detailitem&item_id=4006
https://savannah.gnu.org/patch/?func=detailitem&item_id=4007

[CVE-2005-1229]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1229
http://marc.theaimsgroup.com/?l=bugtraq&m=111403177526312
https://savannah.gnu.org/patch/?func=detailitem&item_id=4005

[CVE-2005-4268]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-4268
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=172669

The latest revision of this advisory is available at
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:03.cpio.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)

iD8DBQFDxL4mFdaIBMps37IRAqQnAJ9Js/Joq8LJJT1kX6DXStgJMliqJQCfdZCx
bxuCX+ps+C0MR5UcLOExHvM=
=7laG
-----END PGP SIGNATURE-----
